package serialisation;

import java.io.File;
import java.io.IOException;
import java.util.LinkedList;
import java.util.List;

import reservation.Trajet;
import reservation.Transport;

public abstract class Serializer {
	protected String fichier;

	public Serializer(String fichier) {
		this.fichier = fichier+"."+getExtention();
		try {
			creerFichier();
		} catch (IOException e) {
			throw new Error("Impossible de creer le fichier de base de donnée");
		}
	}
	
	/** Créer un nouveau fichier de données vierge à partir de son chemin
	 * 
	 * @return true si le fichier est créé, false sinon
	 * @throws IOException
	 * @throws NullPointerException
	 */
	public boolean creerFichier() throws IOException {
		// Obtenir une description du fichier a créer
		File f = new File(fichier);

		// Contrôler l'éventuelle existence du fichier
		if (!f.exists()) {
			// Créer le fichier
			try {
				f.createNewFile();
				f.setWritable(true);
			} catch (IOException e) {
				return false;
			}
		}

		return true;
	}
	
	public abstract boolean store(List<Transport> transports,
			List<Trajet> trajets);

	public abstract boolean load(LinkedList<Transport> transports,
			LinkedList<Trajet> trajets);
	
	public abstract String getExtention();
}
